package com.yxinsur.imc.business.domain;

import java.math.BigDecimal;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.yxinsur.imc.common.annotation.Excel;
import com.yxinsur.imc.common.core.domain.BaseImcEntity;

/**
 * 险种产品基础手续费率对象 imc_fee_rate
 * 
 * @author imc
 * @date 2021-04-15
 */
public class ImcFeeRate extends BaseImcEntity
{
    private static final long serialVersionUID = 1L;

    /** 费率表主键 */
    private String id;

    /** 险种表外键 */
    @Excel(name = "险种表外键")
    private Long repoInsId;

    /** 机构id */
    @Excel(name = "机构id")
    private Long orgId;

    /** 费率类型[A折标率B佣金率C基础手续费率] */
    @Excel(name = "费率类型[A折标率B佣金率C基础手续费率]")
    private String rateType;

    /** 缴费期间下限 */
    @Excel(name = "缴费期间下限")
    private String chargePeriodLowerValue;

    /** 缴费期间上限 */
    @Excel(name = "缴费期间上限")
    private String chargePeriodUpperValue;

    /** 保障期间-下限 */
    @Excel(name = "保障期间-下限")
    private Long coveragePeriodLowerValue;

    /** 保障期间-上限 */
    @Excel(name = "保障期间-上限")
    private Long coveragePeriodUpperValue;

    /** 险种方案表外键 */
    @Excel(name = "险种方案表外键")
    private Long insSchemeId;

    /** 保险方代码 */
    @Excel(name = "保险方代码")
    private String insSchemeKey;

    /** 保险方案名称 */
    @Excel(name = "保险方案名称")
    private String insSchemeValue;

    /** 因子key组合的结果字符串(以逗号分隔,) */
    @Excel(name = "因子key组合的结果字符串(以逗号分隔,)")
    private String factorKeyIds;

    /** 因子value组合的结果字符串(以逗号分隔,) */
    @Excel(name = "因子value组合的结果字符串(以逗号分隔,)")
    private String factorValuesIds;

    /** 缴费频率类型 */
    @Excel(name = "缴费频率类型")
    private String chargeIntervalEnum;

    /** 保单年度 */
    @Excel(name = "保单年度")
    private String payYear;

    /** 手续费基础费率 */
    @Excel(name = "手续费基础费率")
    private BigDecimal baseFeeRate;

    /** 生效日期 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "生效日期", width = 30, dateFormat = "yyyy-MM-dd")
    private Date startTime;

    /** 失效日期 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "失效日期", width = 30, dateFormat = "yyyy-MM-dd")
    private Date endTime;
    /** 租户id,一个租户id唯一对一个机构id（默认机构id为根节点id暨法人机构） */
    @Excel(name = "租户id,一个租户id唯一对一个机构id", readConverterExp = "默=认机构id为根节点id暨法人机构")
    private Long tenantId;

    public void setId(String id) 
    {
        this.id = id;
    }

    public String getId() 
    {
        return id;
    }

    public Long getRepoInsId() {
        return repoInsId;
    }

    public void setRepoInsId(Long repoInsId) {
        this.repoInsId = repoInsId;
    }

    public void setOrgId(Long orgId)
    {
        this.orgId = orgId;
    }

    public Long getOrgId() 
    {
        return orgId;
    }
    public void setRateType(String rateType) 
    {
        this.rateType = rateType;
    }

    public String getRateType() 
    {
        return rateType;
    }
    public void setChargePeriodLowerValue(String chargePeriodLowerValue) 
    {
        this.chargePeriodLowerValue = chargePeriodLowerValue;
    }

    public String getChargePeriodLowerValue() 
    {
        return chargePeriodLowerValue;
    }
    public void setChargePeriodUpperValue(String chargePeriodUpperValue) 
    {
        this.chargePeriodUpperValue = chargePeriodUpperValue;
    }

    public String getChargePeriodUpperValue() 
    {
        return chargePeriodUpperValue;
    }
    public void setCoveragePeriodLowerValue(Long coveragePeriodLowerValue) 
    {
        this.coveragePeriodLowerValue = coveragePeriodLowerValue;
    }

    public Long getCoveragePeriodLowerValue() 
    {
        return coveragePeriodLowerValue;
    }
    public void setCoveragePeriodUpperValue(Long coveragePeriodUpperValue) 
    {
        this.coveragePeriodUpperValue = coveragePeriodUpperValue;
    }

    public Long getCoveragePeriodUpperValue() 
    {
        return coveragePeriodUpperValue;
    }
    public void setInsSchemeId(Long insSchemeId) 
    {
        this.insSchemeId = insSchemeId;
    }

    public Long getInsSchemeId() 
    {
        return insSchemeId;
    }
    public void setInsSchemeKey(String insSchemeKey) 
    {
        this.insSchemeKey = insSchemeKey;
    }

    public String getInsSchemeKey() 
    {
        return insSchemeKey;
    }
    public void setInsSchemeValue(String insSchemeValue) 
    {
        this.insSchemeValue = insSchemeValue;
    }

    public String getInsSchemeValue() 
    {
        return insSchemeValue;
    }
    public void setFactorKeyIds(String factorKeyIds) 
    {
        this.factorKeyIds = factorKeyIds;
    }

    public String getFactorKeyIds() 
    {
        return factorKeyIds;
    }
    public void setFactorValuesIds(String factorValuesIds) 
    {
        this.factorValuesIds = factorValuesIds;
    }

    public String getFactorValuesIds() 
    {
        return factorValuesIds;
    }
    public void setChargeIntervalEnum(String chargeIntervalEnum) 
    {
        this.chargeIntervalEnum = chargeIntervalEnum;
    }

    public String getChargeIntervalEnum() 
    {
        return chargeIntervalEnum;
    }
    public void setPayYear(String payYear) 
    {
        this.payYear = payYear;
    }

    public String getPayYear() 
    {
        return payYear;
    }
    public void setBaseFeeRate(BigDecimal baseFeeRate) 
    {
        this.baseFeeRate = baseFeeRate;
    }

    public BigDecimal getBaseFeeRate() 
    {
        return baseFeeRate;
    }
    public void setStartTime(Date startTime) 
    {
        this.startTime = startTime;
    }

    public Date getStartTime() 
    {
        return startTime;
    }
    public void setEndTime(Date endTime) 
    {
        this.endTime = endTime;
    }

    public Date getEndTime() 
    {
        return endTime;
    }
    public void setTenantId(Long tenantId)
    {
        this.tenantId = tenantId;
    }

    public Long getTenantId() 
    {
        return tenantId;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("id", getId())
            .append("orgId", getOrgId())
            .append("rateType", getRateType())
            .append("chargePeriodLowerValue", getChargePeriodLowerValue())
            .append("chargePeriodUpperValue", getChargePeriodUpperValue())
            .append("coveragePeriodLowerValue", getCoveragePeriodLowerValue())
            .append("coveragePeriodUpperValue", getCoveragePeriodUpperValue())
            .append("insSchemeId", getInsSchemeId())
            .append("insSchemeKey", getInsSchemeKey())
            .append("insSchemeValue", getInsSchemeValue())
            .append("factorKeyIds", getFactorKeyIds())
            .append("factorValuesIds", getFactorValuesIds())
            .append("chargeIntervalEnum", getChargeIntervalEnum())
            .append("payYear", getPayYear())
            .append("baseFeeRate", getBaseFeeRate())
            .append("startTime", getStartTime())
            .append("endTime", getEndTime())
            .append("createId", getCreateId())
            .append("createTime", getCreateTime())
            .append("updateId", getUpdateId())
            .append("updateTime", getUpdateTime())
            .append("isDeleted", getIsDeleted())
            .append("tenantId", getTenantId())
            .toString();
    }
}
